using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;

namespace FiltronASP.Models.DAO.Interfaces
{
    /// <summary>
    /// Interfejs dla operacji bazodanowych specyficznych dla tabeli <code>user_page_types</code>.
    /// </summary>
    public interface IUserPageTypeDAO : IGenericDAO<UserPageType, System.Nullable<int>>
    {
        /// <summary>
        /// Pobieranie listy obiektów na podstawie id uzytkownika.
        /// </summary>
        /// <param name="userId">uyztkownik</param>
        /// <returns>lista rekordów o zadanym id uzytkownika</returns>
        IQueryable<UserPageType> FindByUserId(int? userId);

        /// <summary>
        /// Pobieranie obiektu na podstawie id uzytkownika i id grupy stron.
        /// </summary>
        /// <param name="userId">uzytkownik</param>
        /// <param name="pageTypeId">grupa stron</param>
        /// <returns>obiekt na podstawie id uzytkownika i id grupy stron</returns>
        UserPageType FindByUserIdAndPageTypeId(int? userId, int? pageTypeId);

        /// <summary>
        /// Usuwanie obiektów na podstawie id uzytkownika.
        /// </summary>
        /// <param name="userId">id uzytkownika</param>
        /// <returns>true w przypadku usunięcia, false w przypadku bledu</returns>
        bool DeleteByUserId(int? userId);

        /// <summary>
        /// Usuwanie obiektów na podstawie id grupy stron.
        /// </summary>
        /// <param name="pageTypeId">id grupy stron</param>
        /// <returns>true w przypadku usunięcia, false w przypadku bledu</returns>
        bool DeleteByPageTypeId(int? pageTypeId);

        /// <summary>
        /// Usuwanie obiektów na podstawie id wersji jezykowej.
        /// </summary>
        /// <param name="languageId">id wersji jezykowej</param>
        /// <returns>true w przypadku usunięcia, false w przypadku bledu</returns>
        bool DeleteByLanguageId(int? languageId);

    }
}

